<?php
function normalizedatetosql($date) {

	$s4 = "/^(\d{2})\/(\d{2})\/(\d{4})$/";
	
	if (
		preg_match($s4, $date, $matches)
		) {
		    
		    // Data di nascita valida
		    return $matches[3] . "-" . $matches[2] . "-" . $matches[1];
	}
	
	return false;
}

function chkdate($date) {

	$s4 = "/^(\d{2})\/(\d{2})\/(\d{4})$/";
	
	if (
		preg_match($s4, $date, $matches)
		) {
		    
		    // Data di nascita valida
		    if (checkdate($matches[2], $matches[1], $matches[3])) {
		    	return true;		    	
		    }
	}
	
	return false;
}

function isMajor($date) {
	$s4 = "/^(\d{2})\/(\d{2})\/(\d{4})$/";
	
	if (
		preg_match($s4, $date, $matches)
		) {
		    
		    // Data di nascita valida
		    if (checkdate($matches[2], $matches[1], $matches[3])) {
		    	
		    	if ((date("Y") - $matches[3] < 18) || ((date("Y") - $matches[3] == 18) && (date("m") - $matches[2] < 0))) {
		    		return false;
		    	} else {
		    		return true;
		    	}
		    			    	
		    }
	}
	
	return false;
}

jimport("joomla.mail.helper");
jimport("joomla.utilities.date");

$error = '';

// Campi obbligatori
if(!$_POST['name']) {
	$error .= 'Campo nome obbligatorio<br/>';
}

if(!$_POST['surname']) {
	$error .= 'Campo cognome obbligatorio<br/>';
}

if(!$_POST['placeofborn']) {
	$error .= 'Campo luogo di nascita obbligatorio<br/>';
}

if(!$_POST['dateofborn']) {
	$error .= 'Campo data di nascita obbligatorio<br/>';
}

if($_POST['dateofborn']) {
	
	// Data di nascita valida
	if (chkdate($_POST['dateofborn'])) {
    	
    	// Controllo età
    	if(!isMajor($_POST['dateofborn'])) {
    		if(!$_POST['parentname']) {
				$error .= 'Campo nome genitore obbligatorio se si è minorenni<br/>';
			}
			
			if(!$_POST['parentsurname']) {
				$error .= 'Campo cognome genitore obbligatorio se si è minorenni<br/>';
			}

			if(!$_POST['parentplaceofborn']) {
				$error .= 'Campo luogo di nascita obbligatorio<br/>';
			}

			if(!$_POST['parentdateofborn']) {
				$error .= 'Campo data di nascita genitore obbligatorio se si è minorenni<br/>';
			}

			if($_POST['parentdateofborn'] && !chkdate($_POST['parentdateofborn'])) {
				$error .= 'Inserire una data di nascita genitore valida<br/>';
			}
    	}		    	
		    	
    } else {
		$error .= 'Inserire una data di nascita valida<br/>';
	}	
}

if(!$_POST['email']) {
	$error .= 'Campo email obbligatorio<br/>';
}

if($_POST['email'] && !JMailHelper::isEmailAddress($_POST['email'])) {
	$error .= 'Inserire un\'email valida<br/>';
}

if(!$_POST['address']) {
	$error .= 'Campo indirizzo obbligatorio<br/>';
}

if(!$_POST['zip']) {
	$error .= 'Campo CAP obbligatorio<br/>';
}

if(!$_POST['city']) {
	$error .= 'Campo città obbligatorio<br/>';
}

// Tipo socio
if(!$_POST['type']) {
	$error .= 'Si prega di indicare una tipologia di adesione tra "Amico" e "Sostenitore"<br/>';
}

if($error) {
	return $error;
}

// Normalizzo date
if($_POST['dateofborn']) {
	$_POST['dateofborn'] = normalizedatetosql($_POST['dateofborn']);
}

if($_POST['parentdateofborn']) {
	$_POST['parentdateofborn'] = normalizedatetosql($_POST['parentdateofborn']);
}